package com.xz.coursearrange.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.*;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 *
 */

@EqualsAndHashCode(callSuper = true)
@TableName("tb_admin")
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Admin extends Model<Admin> implements Serializable {

    private static final long serialVersionUID=1L;

    /**
     * id
     */
    @TableId
    private Integer id;

    /**
     * 管理员编号
     */
//    @NotBlank(message = "管理员编号不能为空")
    private String adminNo;

    /**
     * 用户名
     */
//    @NotBlank(message = "用户名不能为空")
    @Size(min = 3, max = 20, message = "用户名长度应在3~20之间")
    private String username;

    /**
     * 密码
     */
//    @NotBlank(message = "密码不能为空")
    @Size(min = 6, message = "密码长度不能少于6位")
    private String password;

    /**
     * 真实姓名
     */
//    @NotBlank(message = "真实姓名不能为空")
    @Size(min = 2, max = 20, message = "真实姓名长度应在2~20之间")
    private String realname;

    /**
     * 用户类型1
     */
//    @NotNull(message = "用户类型不能为空")
    @Min(value = 1, message = "用户类型不合法")
    @Max(value = 3, message = "用户类型不合法")
    private Integer userType;

    /**
     * 职称
     */
//    @NotBlank(message = "职称不能为空")
    @Size(min =2, max = 20, message = "职称长度应在2~20之间")
    private String jobtitle;

    /**
     * 教授科目
     */
//    @NotBlank(message = "教授科目不能为空")
    @Size(min =2, max = 20, message = "教授科目应在2~20之间")
    private String teach;

    /**
     * 联系电话
     */
//    @NotBlank(message = "联系电话不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String telephone;

    /**
     * 电子邮件
     */
    @Email(message = "邮箱格式不正确")
    private String email;

    /**
     * 证件
     */
    private String license;

    /**
     * 年龄
     */
    @Min(value = 18, message = "年龄不能小于18岁")
    @Max(value = 120, message = "年龄不能大于120岁")
    private Integer age;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 地址
     */
    private String address;

    /**
     * 签名
     */
    @Size(min =2, max = 500, message = "签名应在2~500之间")
    private String description;

    /**
     * 备注
     */
    private String remark;

    /**
     * 优先级
     */
    @Min(value = 0, message = "优先级不能为负数")
    private Integer piority;

    /**
     * 权限,默认为1(普通管理员) 0为超级管理员，登录的时候需要进行验证
     */
//    @NotNull(message = "权限不能为空")
    @Min(value = 0)
    @Max(value = 1)
    private Integer power;

    /**
     * 类型
     */
    private Integer type;

    /**
     * 账号状态
     */
//    @NotNull(message = "账号状态不能为空")
    @Min(value = 0)
    @Max(value = 1)
    private Integer status;

    @TableLogic
    private Integer deleted;

    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    @Override
    protected Serializable pkVal() {
        return this.id;
    }


}
